package com.cskaoyan.javase.oop1._7exercise._1pvz;

/**
 * 植物类
 *
 * @since 17:19
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Plant {
    int price;
    String name;
    int damage;
    int hp;
    // 持有僵尸对象的引用作为成员变量
    Zombie z;

    // 行为
    public void attack() {
        // 攻击僵尸,需要知道僵尸的名字
        /*
            怎么实现这个需求呢?
            最简单直白的方法就是把僵尸对象作为方法的形参传入
            但是这种方式可以实现功能,但不完美.因为植物和僵尸的交互是频繁进行的
            每个需要交互的地方都传入对象形参,太麻烦了
            如果想更快速的交互,可以考虑把僵尸的对象作为成员变量,持有僵尸对象的引用
            那么访问访问僵尸对象的属性和行为就非常容易了
         */
        System.out.println(name + "正在攻击僵尸" + z.name);
    }

    public void beAttacked() {
        System.out.println(name + "被" + z.name + "攻击了,剩余" + (hp - z.damage) + "点血量!");
    }

    public Plant() {
    }

    public Plant(int price, String name, int damage, int hp, Zombie z) {
        this.price = price;
        this.name = name;
        this.damage = damage;
        this.hp = hp;
        this.z = z;
    }
}
